package com.quintilis31.home.core.user;

import com.quintilis31.home.common.exception.Q31RuntimeException;
import com.quintilis31.home.common.exception.functional.Q31DuplicateUserException;
import com.quintilis31.home.common.exception.functional.Q31UserValidationException;
import com.quintilis31.home.common.repository.user.UserDetails;

/**
 * TODO write javadoc... 
 */
public interface IUserServices {

    /**
     * This method saves the user details
     * @param userDetails   The User that needs to be saved
     * @return              true if the save was successful, else false
     */
    boolean saveUserDetails(final UserDetails userDetails) throws Q31RuntimeException;
    
    UserDetails createNewUserAndNotify(final UserDetails userDetails) throws Q31DuplicateUserException, Q31UserValidationException;

}